package funcoesXML;

import biblioteca.Livro;
import biblioteca.Usuario;
import biblioteca.acessoBanco;
import java.io.IOException;
import java.sql.*;
import java.util.*;
import javax.xml.transform.Result;

/**
 * @author Gabriel
 */
public class adapterSQL {

    public ArrayList<Livro> buscaLivroBD() throws SQLException, IOException {
        ArrayList<Livro> lista = new ArrayList();
        try {
            acessoBanco bd = new acessoBanco();
            bd.conectar();
            String query = "select * from livro";
            try (PreparedStatement stm = bd.conn.prepareStatement(query)) {
                ResultSet rs = stm.executeQuery();
                while (rs.next() == true) {
                    Livro book = new Livro();
                    book.setIdLivro(rs.getInt("idLivro"));
                    //book.setIsbn(rs.getLong("isbn"));
                    book.setIsbn(0);
                    book.setAutor(rs.getString("autor"));
                    book.setEditora(rs.getString("editora"));
                    book.setAno(rs.getInt("ano"));
                    book.setTitulo(rs.getString("titulo"));
                    lista.add(book);
                    //System.out.println("in? " + book.getAutor() + " " + book.getEditora() + " " + book.getIdLivro());
                }
            }
        } catch (IOException | SQLException ex) {
            System.out.println(ex);
        } finally {
            return lista;
        }
    }

    public ArrayList<Usuario> buscaUserBD() throws SQLException, IOException {
        ArrayList<Usuario> lista = new ArrayList();
        try {
            acessoBanco bd = new acessoBanco();
            bd.conectar();
            String query = "select * from usuario";
            PreparedStatement stm = bd.conn.prepareStatement(query);
            ResultSet rs = stm.executeQuery();
            while (rs.next()) {
                Usuario user = new Usuario();
                user.setIdUsuario(rs.getInt("idUsuario"));
                user.setNome(rs.getString("nome"));
                user.setDataNasc(rs.getDate("dataNasc").toString());
                user.setCi(rs.getInt("ci"));
                user.setCpf(rs.getInt("cpf"));
                lista.add(user);

            }
            stm.close();
        } catch (IOException | SQLException ex) {
            System.out.println(ex);
        } finally {
            return lista;
        }

    }

    public void importLivro(ArrayList<Livro> lista) throws IOException, SQLException {
        acessoBanco bd = new acessoBanco();
        bd.conectar();
        try {
            for (int i = 0; i < lista.size(); i++) {
                Livro book = lista.get(i);
                String query = "insert into livro (isbn, autor, editora, ano, titulo) values (" + String.valueOf(book.getIsbn()) + ", '" + book.getAutor() + "', '" + book.getEditora() + "'," + String.valueOf(book.getAno()) + ",'" + book.getTitulo() + "')";
                PreparedStatement stm = bd.conn.prepareStatement(query);
                stm.executeUpdate();
            }
        } catch (SQLException e) {
            System.out.println(e);

        }
        bd.conn.close();
    }

    public void importUser(ArrayList<Usuario> lista) throws IOException, SQLException {
        acessoBanco bd = new acessoBanco();
        bd.conectar();
        for (int i = 0; i < lista.size(); i++) {
            Usuario user = lista.get(i);
            String query = "insert into usuario (nome, dataNasc, cpf, ci) values ('" + user.getNome() + "'," + user.getDataNasc() + "," + String.valueOf(user.getCpf()) + "," + String.valueOf(user.getCi()) + ")";
            PreparedStatement stm = bd.conn.prepareStatement(query);
            stm.executeUpdate();
        }
    }
}
